<?php

namespace Modules\Admin\Http\Controllers;

use App\Admin;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Admin\Http\Requests\AdminUserRequest;
use Spatie\Permission\Models\Role;

class AdminUserController extends Controller
{
    /**
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {
        //获取后台用户的所有数据
        $admins = Admin::paginate(5);
        return view('admin::adminuser.index',compact('admins'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Response
     */
    public function create()
    {
        return view('admin::create');
    }

    /**
     * Store a newly created resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function store(Request $request,AdminUserRequest $adminUserRequest)
    {
        //获取用户通过post提交的用户数据
        $post = $request->all();
        //把密码加密,用bcrypt()方法
        $post['password'] = bcrypt($post['password']);
        //把后台用户数据添加到admins表中
        Admin::create($post);
        //设置闪存信息，并返回
        session()->flash('success','添加用户成功');
        return redirect()->route('adminuser.index');
    }

    /**
     * Show the specified resource.
     * @return Response
     */
    public function show()
    {
        return view('admin::show');
    }

    /**
     * Show the form for editing the specified resource.
     * @return Response
     */
    public function edit()
    {
        return view('admin::edit');
    }

    /**
     * Update the specified resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function update(Request $request,AdminUserRequest $adminUserRequest,$id)
    {
        //获取对应id的用户数据
        $user = Admin::find($id);
        //然后把编辑后的数据一一对应的替换掉原来的旧数据
        $user->name = $request->input('name');
        $user->nickname = $request->input('nickname');
        //对密码进行判断，如果用户有填写密码，就把密码加密然后替换掉原来的密码
        if ($request->input('password')){
            $user->password = bcrypt($request->input('password'));
        }
        //进行保存
        $user->save();
        //设置闪存并返回
        session()->flash('success','后台用户资料编辑成功');
        //跳转
        return redirect()->route('adminuser.index');
    }

    /**
     * Remove the specified resource from storage.
     * @return Response
     */
    public function destroy($id)
    {
        //获取对应id的用户数据
        $user = Admin::find($id);
        //调用组件的删除方法
        $user->delete();
        //设置闪存，并返回
        session()->flash('success','后台用户删除成功');
        return redirect()->route('adminuser.index');
    }


    //加载为用户添加角色的模板方法
    public function addRole(Admin $admin)
    {
        //获取所有的角色数据
        $role = Role::get();
//        dd($admin);
        return view('admin::adminuser.addrole',compact('role','admin'));
    }

    //处理为用户添加角色的方法
    public function postRole(Request $request,Admin $admin)
    {
        //给当前需要添加角色的用户设置某些角色数据
        //syncRoles()方法可以在手册中找到,当前
        $admin->syncRoles($request->input('name'));
        //设置闪存并返回
        session()->flash('success','角色添加成功');
        return redirect()->back();
    }
}
